//LCP 23

/**
 * @param {number[]} target
 * @return {boolean}
 */
var isMagic = function (target) {
    let max = target.length;
    if (max == 1) {
        return true;
    }
    if (target[0] != 2) {
        return false;
    }
    let i = 0;
    while (i < max && target[i] == (i + 1) * 2) {
        i++;
    }
    if (i == Math.floor(max / 2)) {
        let j = 0;
        while (i < max && target[i] == (j * 2) + 1) {
            j++;
            i++;
        }
    }
    let n = i;
    let result = new Array(max).fill(0).map((e, index) => 1 + index);
    let temp = result.filter((e, index) => index % 2 == 1).concat(result.filter((e, index) => index % 2 == 0));
    result = temp.slice(n, temp.length);
    while (result.length > n) {
        temp = result.filter((e, index) => index % 2 == 1).concat(result.filter((e, index) => index % 2 == 0));
        for (let j = 0; j < n; j++) {
            if (target[i] != temp[j]) {
                return false;
            }
            i++;
        }
        result = temp.slice(n, temp.length);
    }
    if (result.length > 0) {
        result = result.filter((e, index) => index % 2 == 1).concat(result.filter((e, index) => index % 2 == 0));
        for (let r of result) {
            if (r != target[i]) {
                return false;
            }
            i++;
        }
    }
    return true;
};

console.log(isMagic());

// 执行用时：
// 108 ms
// , 在所有 JavaScript 提交中击败了
// 62.86%
// 的用户
// 内存消耗：
// 45.6 MB
// , 在所有 JavaScript 提交中击败了
// 11.43%
// 的用户